前幾天的內容,我們已經學會如何從頭創建一個新的應用程式,不過還有很多功能沒有,如果有要新增或變更的欄位,那要怎麼辦呢?
我們不需碰觸原有的程式碼,利用繼承的方式,在原先程式上做到添加功能,這就是odoo厲害的地方。
那繼承能幫我們做到哪些事:
那要擴充哪些功能呢?
書本:
1.管理書本目前狀況(可不可以租借)。
2.ISBN碼驗證支援10位數的格式。
3.在web頁面(圖書清單)判斷此書可否借,並只顯示可借書籍。
會員:
1.儲存使用者姓名、聯絡資訊。
2.提供聊天跟互動功能。
在library_app旁建立一個新目錄ibrary_member,並添加兩個檔案-一個空的__init__.py和一個包含以下內容的__manifest__.py:
{
"name": "Library Members",
"description": "Manage members borrowing books.",
"author": "Daniel Reis",
"license": "AGPL-3",
"depends": ["library_app", "mail"],
"application": False,
}
新增是否可用的欄位
在library_member/init.py
from . import models
from . import controllers
在library_member/models/init.py
from . import library_book
from . import library_member
先在library_member/models/library_book.py使用_inherit 來宣告要擴展的model
from odoo import fields, models
class Book(models.Model):
_inherit = "library.book"
is_available = fields.Boolean("Is Available?")
再到view新增是否可用的欄位
到library_member/views/book_view.xml
<odoo>
<record id="view_form_book_extend" model="ir.ui.view">
<field name="name">Book: add Is Available? field</field>
<field name="model">library.book</field>
<field name="inherit_id" ref="library_app.view_form_book"/>
<field name="arch" type="xml">
<field name="isbn" position="after">
<field name="is_available" />
</field>
<!-- Or, using xpath:
<xpath expr="//field[@name='isbn']" position="after">
<field name="is_available" />
</xpath>
-->
</field>
</record>
</odoo>
這樣運行odoo就能看到。